4-QUEEN / N-QUEEN
def is_safe(board, row, col, N):
 for i in range(row):
     if board[i][col] == 'Q':
         return False
 for i, j in zip(range(row, -1, -1), range(col, -1, -1)):
     if board[i][j] == 'Q':
         return False
 for i, j in zip(range(row, -1, -1), range(col, N)):
     if board[i][j] == 'Q':
         return False
 return True
def solve_n_queens(board, row, N, solutions):
 if row >= N:
     solutions.append([''.join(row) for row in board])
     return True
 result = False
 for col in range(N):
     if is_safe(board, row, col, N):
         board[row][col] = 'Q'
         result = solve_n_queens(board, row + 1, N, solutions) or result
         board[row][col] = '.'
 return result
def print_board(board):
 for row in board:
     print(' '.join(row))
 print()
def solve(N):
 board = [['.' for _ in range(N)] for _ in range(N)]
 solutions = []
 solve_n_queens(board, 0, N, solutions)
 for solution in solutions:
     for row in solution:
         print(row.replace('.', '•'))
     print()
 print(f'Number of solutions: {len(solutions)}')
N = int(input("Enter the number of queens (N): "))
solve(N)



